//
// Created by martin on 9/28/21.
//

#ifndef FTPSERVER2_0_EF_STRING_H
#define FTPSERVER2_0_EF_STRING_H

#include <stdint.h>

#define EF_STRING_CAPACITY_INIT       (16)
#define EF_STRING_FACTOR_DEFAULT      (1.5f)
#define EF_STRING_CAPACITY_MAX        (INT32_MAX >> 1)

struct ef_string {
    char *str;
    int len;
    int capacity;
    float factor;
};

struct ef_string* ef_string_new();
struct ef_string* ef_string_new_with_string(const char *str);
void ef_string_free(struct ef_string **s);
int ef_string_get_length(struct ef_string *s);
struct ef_string* ef_string_append(struct ef_string *s, const char *str);
const char *ef_string_cstr(struct ef_string *s);

#endif //FTPSERVER2_0_EF_STRING_H
